//
// Created by 高森森 on 2022/9/26.
//

#ifndef LEETCODE_SOLUTION_6_H
#define LEETCODE_SOLUTION_6_H
#include<bits/stdc++.h>
using namespace std;

class solution_6 {
public:
    int findShortestSubArray(vector<int>& nums) {
        unordered_map<int,int>left,right,counter;
        int degree=0;
        for(int i=0;i<nums.size();i++){
            if(left.count(nums[i])==0){
                left.insert(make_pair(nums[i],i));
            }
            right[nums[i]]=i;
            counter[nums[i]]++;
            degree=max(degree,counter[nums[i]]);
        }
        int res=INT_MAX;
        //得到最大的度
        for(auto it=counter.begin();it!=counter.end();it++){
            if(it->second==degree){
                res=min(right[it->first]-left[it->first]+1,res);
            }
        }
        return res;
    }
};


#endif //LEETCODE_SOLUTION_6_H
